iT邦幫忙

2021 iThome 鐵人賽

DAY 0
0
自我挑戰組

從零開始學習 JS 的連續-30 Days-系列 第 26

[Day 26]從零開始學習 JS 的連續-30 Days---冒泡與捕捉事件

  • 分享至 

  • xImage
  •  

冒泡事件- event Bubbling vs. 捕捉事件- event capturing

addEventListener事件監聽裡寫法有三個參數,分別為1.選擇事件、2.帶入function、3.true或false。

  1. 冒泡事件- event Bubbling : 從指定元素往外找
// 第三個參數為 false
addEventListener('click',function(),false);
  1. 捕捉事件- event capturing : 從最外面找到指定元素
// 第三個參數為 true
addEventListener('click',function(),true);
  1. 舉例 :
<body class="body">
    <ul>
        <li><a href="#">1234</a></li>
        <li><a href="#">1234</a></li>
    </ul>
    <div class="box"></div>
    <script src="js/all.js"></script>
</body>
const el = document.querySelector('.box');
el.addEventListener('click',function(){
  alert('box');
  console.log('box');
},false);

const elBody = document.querySelector('.body');
elBody.addEventListener('click',function(){
  alert('body');
  console.log('body');
},false);

// 將上面程式碼 false 同時換成 true 則找尋方向會不同。

stopPropagation---中止冒泡

  1. 使用時機可用在元素與元素重疊的情況下,原本會執行第二個監聽事件就會被中止。
  2. 在指定的監聽事件加上 e.stopPropagation(); 此語法。
<body class="body">
    <ul>
        <li><a href="#">1234</a></li>
        <li><a href="#">1234</a></li>
    </ul>
    <div class="box"></div>
    <script src="js/all.js"></script>
</body>
const el = document.querySelector('.box');
el.addEventListener('click',function(){
  e.stopPropagation();   //中止冒泡語法
  alert('box');
  console.log('box');
},false);

const elBody = document.querySelector('.body');
elBody.addEventListener('click',function(){
  alert('body');
  console.log('body');
},false);

今天就到這結束了。


上一篇
[Day 25]從零開始學習 JS 的連續-30 Days---addEventListener 事件監聽
下一篇
[Day 27]從零開始學習 JS 的連續-30 Days---BOM-瀏覽器物件模型(上)
系列文
從零開始學習 JS 的連續-30 Days-30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言